iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
Modern Web

30天每天寫網站系列 第 20

Day20-自製下拉式選單_我就想要美美的

  • 分享至 

  • xImage
  •  

今天來弄一個自製的漂亮下拉式選單

首先下拉式選單,會有上面可以按的地方跟下方會彈出來的懸浮按鈕
我這邊直接設置了兩個圖樣,一個是向上一個向下,剛打開網站時應該是沒有顯示懸浮按鈕的,所以先把往上的隱藏,往下的顯示

<div class="input-group" id="input-group">
    <button type="button" class="btn dropdown-toggle" id="dropdown-toggle">
        請選擇 
        <i class="fas fa-chevron-down" style="display:block"></i>
        <i class="fas fa-chevron-up" style="display:none"></i>
    </button>
    <ul class="dropdown-menu" id="dropdown-menu">
        <li><a href="#">全部</a></li>
        <li><a href="#">台北</a></li>
        <li><a href="#">新北</a></li>
        <li><a href="#">台中</a></li>
    </ul>
</div>

button的部分是可以案的部分
ul是懸浮按鈕的部分
https://ithelp.ithome.com.tw/upload/images/20211005/201419915myPlGgWvf.jpg

然後把CSS加上去,ul的部分因為要懸浮所以要做position: absolute; 並把高度拉到最高z-index: 100;
稍微做一下美化,自己喜歡的樣子
主要是ul的部分需要對一下位置,想要大概在哪個位置要排版一下~
https://ithelp.ithome.com.tw/upload/images/20211005/20141991VnCcI8WUrX.jpg
完成後在ul設置display: none;
然後進入JS
這邊要用的是jQuery的. slideToggle()這個方法
設置當button點擊時,ul的dropdown-menu做拉開跟關上的動作
先設置一個在另外的函式中,因為其他地方還會呼叫到,直接拉出來比較方便

function change(n){
    $("#dropdown-menu").slideToggle("");
    if (n == 1) {
        slide = 0;
        $(".fa-chevron-up").attr("style", "display:none")
        $(".fa-chevron-down").attr("style", "display:block")
    }
    else {
        slide = 1;
        $(".fa-chevron-up").attr("style", "display:block")
        $(".fa-chevron-down").attr("style", "display:none")
    }
}

然後在到ready中寫當dropdown-toggle被點擊時,要發生的變化
因為要發生的變化我們已經寫好函式了,這邊直接呼叫並給予當前狀態
需要另外設置一個變數(需為全域變數,其他地方會用到),用以幫助我們告訴change函式要打開還是關上

var slide = 0;
$(function () {
    $("#dropdown-toggle").click(function () {
        change(slide)
    });
})

利用. slideToggle()方法可以直接做到拉開與關上不用另外再設置東西了
這樣簡單漂亮的下拉式選單就完成囉!!
https://i.imgur.com/aamPAUp.gif

然後讓下拉式選單的按鈕有一點作用
首先像之前一樣多設一個div,並設置id,這次設在下面

<div class="input-group" id="input-group">
...
</div>
<div id="show"></div>

然後在JS寫函式
選擇後讓ul關上,一樣是透過改變slide數值跟呼叫change函式

function area(area) {
    $("#show").empty()
    slide = 0
    change(slide)
	$("#show").append(area.text)
}

跟之前選擇器一樣需要在HTML加上onclick="area(this)"
因為這次抓取的是a連結,然後文字是放在外面,所以直接抓取area.text便可以抓取到a連結的文字了~
然後便可以把抓到的文字或是另外設置的name、data-屬性等東西,運用到需要的地方了
https://i.imgur.com/hKVzawD.gif


上一篇
Day19-Flex屬性_超簡單製作導覽列
下一篇
Day21-大量圖片的頁面(上)_利用grid快速排版
系列文
30天每天寫網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言